home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
amok_lha
/
amok58.lha
/
QSort
/
QSortTest.mod
< prev
next >
Wrap
Text File
|
1993-08-15
|
2KB
|
96 lines
(*------------------------------------------------------------------)
:Program. QSortTest
:Author. Philippe Gressly (PHILU)
:Address. Näfenhaus, CH-8926 Kappel a/Albis
:History V0.99 (2.8.91)
:Update.
:Copyright. PD
:Language. Modula-II
:Translator. M2Amiga
:Imports.
:Support.
:Bugs.
:Contents. Programm zum testen vom QSort-Algorithmus.
:Remark.
:Usage. (zB. CLI-Befehle)
(------------------------------------------------------------------*)
MODULE QSortTest;
FROM InOut IMPORT WriteString, WriteLn, ReadInt, WriteInt, Read;
FROM QSort IMPORT QSort;
CONST MAX = 10000;
VAR Arr: ARRAY[0..MAX-1] OF INTEGER;
(* Hier werden die Zahlen abgespeichert *)
PROCEDURE grth(i,j: LONGINT): BOOLEAN;
(* Vergleicht die Zahl an der Stelle i mit der Zahl bei j.
* liefert TRUE, wenn die Zahl bei i echt größer als die bei j ist.
*)
BEGIN
RETURN Arr[i] > Arr[j]
END grth;
PROCEDURE swap(i,j: LONGINT);
(* Vertauscht zwei Zahlen im Array *)
VAR t: INTEGER;
BEGIN
t := Arr[i];
Arr[i] := Arr[j];
Arr[j] := t
END swap;
(****************************************)
(****** H A U P T P R O G R A M M ******)
(****************************************)
VAR
end: INTEGER; (* letzte genutzte Zahl im Array.
* end muss kleiner als MAX sein.
*)
k : INTEGER; (* Laufvariable *)
ch : CHAR; (* Wird bei Read (warte auf Returntaste) gebraucht. *)
BEGIN (* QSortTest *)
WriteString("Anzahl zu sortierende Zahlen: "); ReadInt(end);
DEC(end); (* end = letztest zu sortierendes Element in Arr. *)
IF (end >= 0) AND (end <= MAX-1) THEN
FOR k := 0 TO end DO
WriteInt(k+1, 3);
WriteString(". Zahl: "); ReadInt(Arr[k]);
END;
WriteString("Start...");
Read(ch);
(* QUICKSORT AUFRUF *)
(*********************)
QSort(0, end, grth, swap);
WriteLn;
WriteString("QSort Fertig. Folgt Ausgabe:");
Read(ch);
WriteLn; WriteLn;
FOR k := 0 TO end DO
WriteInt(k+1, 3); WriteString(". Zahl");
WriteInt(Arr[k], 5); WriteLn
END
ELSE
WriteString("Anzahl muß sein von 1 bis "); WriteInt(MAX, 3);
WriteLn
END
END QSortTest.mod